import { getAllRolesList, getAllTenantList } from './user.api';
import { rules } from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
export const columns = [
    {
        title: '用户账号',
        dataIndex: 'username',
        width: 120,
    },
    {
        title: '用户姓名',
        dataIndex: 'realname',
        width: 100,
    },
    {
        title: '头像',
        dataIndex: 'avatar',
        width: 120,
        customRender: render.renderAvatar,
    },
    {
        title: '性别',
        dataIndex: 'sex',
        width: 80,
        sorter: true,
        customRender: ({ text }) => {
            return render.renderDict(text, 'sex');
        },
    },
    {
        title: '生日',
        dataIndex: 'birthday',
        width: 100,
    },
    {
        title: '手机号',
        dataIndex: 'phone',
        width: 100,
    },
    {
        title: '部门',
        width: 150,
        dataIndex: 'orgCodeTxt',
    },
    {
        title: '负责部门',
        width: 150,
        dataIndex: 'departIds_dictText',
    },
    {
        title: '状态',
        dataIndex: 'status_dictText',
        width: 80,
    },
];
export const recycleColumns = [
    {
        title: '用户账号',
        dataIndex: 'username',
        width: 100,
    },
    {
        title: '用户姓名',
        dataIndex: 'realname',
        width: 100,
    },
    {
        title: '头像',
        dataIndex: 'avatar',
        width: 80,
        customRender: render.renderAvatar,
    },
    {
        title: '性别',
        dataIndex: 'sex',
        width: 80,
        sorter: true,
        customRender: ({ text }) => {
            return render.renderDict(text, 'sex');
        },
    },
];
export const searchFormSchema = [
    {
        label: '账号',
        field: 'username',
        component: 'JInput',
        colProps: { span: 6 },
    },
    {
        label: '名字',
        field: 'realname',
        component: 'JInput',
        colProps: { span: 6 },
    },
    {
        label: '性别',
        field: 'sex',
        component: 'JDictSelectTag',
        componentProps: {
            dictCode: 'sex',
            placeholder: '请选择性别',
            stringToNumber: true,
        },
        colProps: { span: 6 },
    },
    {
        label: '手机号码',
        field: 'phone',
        component: 'Input',
        colProps: { span: 6 },
    },
    {
        label: '用户状态',
        field: 'status',
        component: 'JDictSelectTag',
        componentProps: {
            dictCode: 'user_status',
            placeholder: '请选择状态',
            stringToNumber: true,
        },
        colProps: { span: 6 },
    },
];
export const formSchema = [
    {
        label: '',
        field: 'id',
        component: 'Input',
        show: false,
    },
    {
        label: '用户账号',
        field: 'username',
        component: 'Input',
        dynamicDisabled: ({ values }) => {
            return !!values.id;
        },
        dynamicRules: ({ model, schema }) => rules.duplicateCheckRule('sys_user', 'username', model, schema, true),
    },
    {
        label: '登录密码',
        field: 'password',
        component: 'StrengthMeter',
        rules: [
            {
                required: true,
                message: '请输入登录密码',
            },
        ],
    },
    {
        label: '确认密码',
        field: 'confirmPassword',
        component: 'InputPassword',
        dynamicRules: ({ values }) => rules.confirmPassword(values, true),
    },
    {
        label: '用户姓名',
        field: 'realname',
        required: true,
        component: 'Input',
    },
    {
        label: '工号',
        field: 'workNo',
        required: true,
        component: 'Input',
        dynamicRules: ({ model, schema }) => rules.duplicateCheckRule('sys_user', 'work_no', model, schema, true),
    },
    {
        label: '职务',
        field: 'post',
        required: false,
        component: 'JSelectPosition',
        componentProps: {
            rowKey: 'code',
            labelKey: 'name',
        },
    },
    {
        label: '角色',
        field: 'selectedroles',
        component: 'ApiSelect',
        componentProps: {
            mode: 'multiple',
            api: getAllRolesList,
            labelField: 'roleName',
            valueField: 'id',
        },
    },
    {
        label: '所属部门',
        field: 'selecteddeparts',
        component: 'JSelectDept',
        componentProps: ({ formActionType, formModel }) => {
            return {
                sync: false,
                checkStrictly: true,
                defaultExpandLevel: 2,
                onSelect: (options, values) => {
                    const { updateSchema } = formActionType;
                    //所属部门修改后更新负责部门下拉框数据
                    updateSchema([
                        {
                            field: 'departIds',
                            componentProps: { options },
                        },
                    ]);
                    //所属部门修改后更新负责部门数据
                    formModel.departIds && (formModel.departIds = formModel.departIds.filter((item) => values.value.indexOf(item) > -1));
                },
            };
        },
    },
    {
        label: '租户',
        field: 'relTenantIds',
        component: 'ApiSelect',
        componentProps: {
            mode: 'multiple',
            api: getAllTenantList,
            numberToString: true,
            labelField: 'name',
            valueField: 'id',
        },
    },
    {
        label: '身份',
        field: 'userIdentity',
        component: 'RadioGroup',
        defaultValue: 1,
        componentProps: ({ formModel }) => {
            return {
                options: [
                    { label: '普通用户', value: 1, key: '1' },
                    { label: '上级', value: 2, key: '2' },
                ],
                onChange: () => {
                    formModel.userIdentity == 1 && (formModel.departIds = []);
                },
            };
        },
    },
    {
        label: '负责部门',
        field: 'departIds',
        component: 'Select',
        componentProps: {
            mode: 'multiple',
        },
        ifShow: ({ values }) => values.userIdentity == 2,
    },
    {
        label: '头像',
        field: 'avatar',
        component: 'JImageUpload',
        componentProps: {
            fileMax: 1,
        },
    },
    {
        label: '生日',
        field: 'birthday',
        component: 'DatePicker',
    },
    {
        label: '性别',
        field: 'sex',
        component: 'JDictSelectTag',
        componentProps: {
            dictCode: 'sex',
            placeholder: '请选择性别',
            stringToNumber: true,
        },
    },
    {
        label: '邮箱',
        field: 'email',
        component: 'Input',
        rules: rules.rule('email', false),
    },
    {
        label: '手机号码',
        field: 'phone',
        component: 'Input',
        dynamicRules: ({ model, schema }) => {
            return [
                { ...rules.duplicateCheckRule('sys_user', 'phone', model, schema, true)[0] },
                { pattern: /^1[3|4|5|7|8|9][0-9]\d{8}$/, message: '手机号码格式有误' },
            ];
        },
    },
    {
        label: '座机',
        field: 'telephone',
        component: 'Input',
        rules: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' }],
    },
    {
        label: '工作流引擎',
        field: 'activitiSync',
        defaultValue: 1,
        component: 'JDictSelectTag',
        componentProps: {
            dictCode: 'activiti_sync',
            type: 'radio',
            stringToNumber: true,
        },
    },
];
export const formPasswordSchema = [
    {
        label: '用户账号',
        field: 'username',
        component: 'Input',
        componentProps: { disabled: true },
    },
    {
        label: '登录密码',
        field: 'password',
        component: 'StrengthMeter',
        componentProps: {
            placeholder: '请输入登录密码',
        },
        rules: [
            {
                required: true,
                message: '请输入登录密码',
            },
        ],
    },
    {
        label: '确认密码',
        field: 'confirmPassword',
        component: 'InputPassword',
        dynamicRules: ({ values }) => rules.confirmPassword(values, true),
    },
];
export const formAgentSchema = [
    {
        label: '',
        field: 'id',
        component: 'Input',
        show: false,
    },
    {
        field: 'userName',
        label: '用户名',
        component: 'Input',
        componentProps: {
            readOnly: true,
            allowClear: false,
        },
    },
    {
        field: 'agentUserName',
        label: '代理人用户名',
        required: true,
        component: 'JSelectUser',
        componentProps: {
            rowKey: 'username',
            labelKey: 'realname',
            maxSelectCount: 10,
        },
    },
    {
        field: 'startTime',
        label: '代理开始时间',
        component: 'DatePicker',
        required: true,
        componentProps: {
            showTime: true,
            valueFormat: 'YYYY-MM-DD HH:mm:ss',
            placeholder: '请选择代理开始时间',
        },
    },
    {
        field: 'endTime',
        label: '代理结束时间',
        component: 'DatePicker',
        required: true,
        componentProps: {
            showTime: true,
            valueFormat: 'YYYY-MM-DD HH:mm:ss',
            placeholder: '请选择代理结束时间',
        },
    },
    {
        field: 'status',
        label: '状态',
        component: 'JDictSelectTag',
        defaultValue: '1',
        componentProps: {
            dictCode: 'valid_status',
            type: 'radioButton',
        },
    },
];
